{ "cells": [ { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "# Making Chappie\n", "\n", "## Try me\n", " [![Open In Colab](../../_static/colabs_badge.png)](https://colab.research.google.com/github/ffraile/operations-research-notebooks/blob/main/docs/source/CLP/solved/Making%20Chappie%20(Solved%20Graphic).ipynb)[![Binder](../../_static/binder_badge.png)](https://mybinder.org/v2/gh/ffraile/operations-research-notebooks/main?labpath=docs%2Fsource%2FCLP%2Fsolved%2FMaking%20Chappie%20(Solved%20Graphic).ipynb)\n", "\n", "## Problem Definition\n", "The company Tetravaal located in Johannesburg manufactures two types of robots, Model $P_{1}$ and Model $P_{2}$. The production plant is consisted of four different sections: metal machining, plastic moulding, electrical work and assembly. \n", "The metal machining section has a capacity of 7500 units of $P_{1}$ or 6000 units of $P_{2}$ per month. \n", "\n", "Plastic moulding can process 5000 units of $P_{1}$ or 9000 units of $P_{2}$ per month.\n", "\n", "Electrical work can process 6000 units of $P_{1}$ or 7000 units of $P_{2}$ per month.\n", "\n", "In Assembly, there are two assembly lines that work in parallel, one per each robot model.\n", "\n", "The first assembly line can process 4000 units of $P_{1}$ per month\n", "\n", "The second assembly line can process 5000 units of $P_{2}$ per month\n", "\n", "Knowing that the unitary profit of $P_{1}$ is 500€ and that the unitary profit of $P_{2}$ is 600€, and that both robots have a great demand and therefore all manufactured robots are sold, Michelle Bradley, CEO of Tetravaal, asks his engineering team: \n", "\n", "Calculate the number of units of each robot that needs to be manufactured to maximise profit for the company." ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Model\n", "We want to maximise the company profits:\n", "\n", "$\\max z = 500x_{1} + 600x_{2}$\n", "\n", "where z represents the profits (€). The decision variables are:\n", "\n", "$x_{1}:$ units of $P_{1}$ per month\n", "$x_{2}:$ units of $P_{2}$ per month\n", "\n", "The objective function is subject to the following constraints:\n", "\n", "$x_{1}/7500+x_{2}/6000 \\leq 1$ Metal machining constraint\n", "\n", "$x_{1}/5000+x_{2}/9000 \\leq 1$ Plastic moulding constraint\n", "\n", "$x_{1}/6000 + x_{2}/7000 \\leq 1$ Electrical work constraint\n", "\n", "$x_{1} \\leq 4000$ First assembly line constraint \n", "\n", "$x_{2} \\leq 5000$ Second assembly line constraint\n" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Solution using the graphical method\n", "Using Python, we can represent the feasibility region:\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAAEICAYAAACu8qUMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeVhU1/348fcdhl32fRsGkEVQRgFFDWrUxGDUGERxiTYm+dZfG4ytaZpEU6M1SRtt7RZt2rTNbpAEMBC1UbGaxj2iARFwiYCAIsO+7/f3xwC1KaAgi+B5PQ+PcO65937OdOHDWSVZlhEEQRAEQRhqFIMdgCAIgiAIQm+IJEYQBEEQhCFJJDGCIAiCIAxJIokRBEEQBGFIEkmMIAiCIAhDkkhiBEEQBEEYkpSDHUB/srW1ldVq9WCHIQjCICopKQHAxsZmkCMZOlJSUoplWba7y2fYK5XKvwOjEX8wC73TCqQ3Nzf/X3BwcFFnFYZ1EqNWqzlz5sxghyEIwiB6//33AVi5cuWgxjGUSJKUe7fPUCqVf3d0dBxlZ2dXplAoxIZkQo+1trZKWq3Wv7Cw8O/AY53VEdmxIAiC0B9G29nZVYoERugthUIh29nZVaDrzeu8zgDGIwiCINw/FCKBEe5W23+HusxVRBIjCIIgCMKQJJIYQRAEQRCGJJHECIIgCAKwbNky9wMHDpimpqYa+vn5+bd/jRgxYtzmzZvtAVxcXMb4+Pj4+/n5+Y8ePXrUrffHxcWZq9Xq0SqVavT69esdb1c+UO0BKC4u1gsPD/f08PAI8PT0DEhOTjbtbcx91Z5Fixapra2tNd7e3gG9fYZIYgRBEAQBOHv2rOmMGTNqNBpNQ1ZWVkZWVlZGenp6hpGRUeuSJUvK2+t99dVXl9quZbaXNTc3s3btWtW+ffsuXbp06UJ8fLx1SkqKUVflnb1/z549ZpGRkeq+bg/AqlWr3GbNmlWZnZ19ISMjI2Ps2LH1vYm5J+25naeffro4KSnp8t20USQxnamvhAu7QRZz0gRBEIay0NBQn927d5sDrFmzxnnlypVundU7e/askaenZ71S+d87jyQlJZmrVKoGHx+fxu7ec+TIEVN3d/cGf3//RiMjI3nBggWlcXFxll2VD2R7SktLFadOnTL76U9/WgxgZGQk29ratvQm5p62p7q6WoqNjbV48skn3WJjYy1uvTZ79uxqOzu75t5+FjDM94nptW/+Dod+CT7hMOd3YOEy2BEJgiAMWT+PS3W7VFhl0pfP9HE0q/3NQk3e7ept2rTp+saNG10KCwuVaWlpJsnJyVc6q5eUlGQxa9asiu+Xx8TEWC9cuLDk1rKZM2d6S5LEU089pX3hhReKAfLy8gxcXFw6Eh1XV9fGU6dOjeiqvCdtvdv2ZGVlGVpbWzcvWrRInZGRYRIYGFjzt7/9La83Md9Je9LT0w0TExMt9u/fb3Hjxg2DSZMmVc2dO7d87ty5Vb1td1dET0xnHvgJPPIruPoV7AiFM+9Ca+tgRyUIgiD00OzZs6tlWWb79u0Ou3fvvqpUKsnIyDCIiopyDw8P92yvl5ycbP74449X3npvfX29lJycbLFixYqy9rJjx45lZWRkZB44cODy3/72N/t//vOfIwDkTnruJUmSuyq/9efAwEA/Pz8//2effdY9OTnZsn0uTnx8vPnt2hMTE2O5ZMkS95kzZ3olJCR01L+1Pc3NzVJmZqZJdHS0NjMzM8PExKR1w4YNjr2J+U7aExkZ6bV582bX0aNH1x46dOjihx9+eC0qKqrSxMSkz4c3RE9MZxR6MCkafB+FL9bAnrWQngDz/gg2XoMdnSAIwpByJz0m/eX06dPGWq1W38rKqtnKyqoVwN/fv/HTTz/NbU9iqqqqFJWVlXpqtbrp1nvj4uIs/P39a93c3DqGPNrruLi4NM+ZM6f8xIkTprNnz65WqVSNBQUFBu318vPzDZydnZu6Kr/1PWlpaVmgmxPz3nvv2cTHx+fcaXtWrFhRvmLFinKtVqsXHR3tumDBgsrvt0etVjc6ODg0ts+PWbx4cdmbb77pOG/evIqexnwn7cnMzMw4fvy4SVJSkkVERIRXU1OTNH369MrVq1cXe3t7dzss11OiJ6Y71h7wgySY9ye4kQpvT4Zjf4KWuxrCEwRBEAZAbm6u/vLlyz0SEhKuGBsbt3TWswGwd+9es7CwsP8Z6ti1a5d1VFRUafvPlZWVirKyMkX794cPHzYPDAysA5g2bVpNTk6OUVZWlkF9fb2UkJBgHRkZWd5VeV+3Z/369U5r1qzRdtYelUrV7Ojo2JiammoIcODAAXNfX9/63sR8J+1RKBSEhYXVbt269UZKSsrFgwcPXg4ICKgrLCzs844T0RNzO5IEwU+C98Ow92dwcINu0u/87eDQ61VhgiAIQj+qqqpSzJ8/32vLli35QUFB9Rs2bLixbt0618jIyMrv1923b59FVFRU2ffvP3r0qPkHH3zQcY5Ufn6+MiIiYiRAS0uLFBkZWbJw4cJKAH19fbZt23YtPDzcp6WlhWXLlhWHhITUA12W90V7IiIiKqOjo13mzJlTERYWVttVe956661rTzzxhGdjY6OkUqkaYmJicnoTc3f3tJs8ebKPVqvV/34bNm7cWDBlypTa9p/nzZvncfLkSbOysjKlg4ND4Msvv3x97dq1xT35XKTOxreGi5CQELlPD4CUZV0Cs+/nUF8OU36m+1Ia9t07BEHoU+IAyJ6TJClFluWQu3lGampqjkaj6dEvpIFSWFio9/zzz7t8/fXX5suXLy9OTEy0OnfuXJahoeGQ+4X4+uuv28fExNhoNJqasWPH1r344otaf3//UUO1PZ1JTU211Wg06s6uiSSmN2pL4cuXIS0W7Pzgse3gNr7v3yMIwl0TSUzPDfckRhhauktixJyY3jCxhgXvwLLPoKEK/vEwfLkeGmsGOzJBEARBuG+IJOZu+MyCZ09CyNNwcgf8eRJcPTLYUQmCIAjCfUEkMXfLyBzm/g5W7gOFEj6cD0nPQV2vJp8LgiAIgnCHRBLTV9QPwI+PwQM/hXM7dZvkZe0d7KgEQRAEYdgSSUxf0jeGh38JPzwEpnawaxl8thKqiwY7MkEQBEEYdkQS0x+cx8GqwzDjF7remB0TIDVWHCgpCIIgCH1IJDH9RU8fpv4cfnQUbLxh9yrYuQjKB233bUEQBEEYVkQS09/sfOHpLyF8C+Qegz9P1J2SLQ6UFARBEIS7IpKYgaDQg4k/gmdPgOt43fEF78+B4k5PUBcEQRAE4Q6IJGYgWalhxW6Y/2cougB/eQCO/kEcKCkIgnAPWLZsmfuBAwdMAVxcXMb4+Pj4+/n5+Y8ePXpUe524uDhztVo9WqVSjV6/fr3jrfd3da27ewaqPa+99pq9t7d3wMiRIwM2b95sfzcx91V7Fi1apLa2ttZ4e3v3+iBCkcQMNEmCcU9A9GkY+RAkb4S/z4DC84MdmSAIwn3t7NmzpjNmzOjYev2rr766lJWVlZGenp4J0NzczNq1a1X79u27dOnSpQvx8fHWKSkpRt1d6+6e79uzZ49ZZGSkuq/b88033xh9+OGHdmfPns3MzMy88OWXX1qeP3/esDcx96Q9t/P0008XJyUlXb6bNookZrCYOcKSnRD1IVTegHcehEOvQVOPDzcVBEEQuhAaGuqze/duc4A1a9Y4r1y50q2zemfPnjXy9PSsVyqVXT7ryJEjpu7u7g3+/v6NRkZG8oIFC0rj4uIsu7vW3T0D1Z7z588bBwUFVZuZmbXq6+vzwAMPVMXGxnYZW2/a2VW81dXVUmxsrMWTTz7pFhsba3HrtdmzZ1fb2dnd1VBE1/9p9SFJktYC/wfIwHngKcAJ2AVYA2eBFbIsN0qSZAh8CAQDJcBiWZZz2p6zDngGaAHWyLK8fyDi71f+80E9Bfa/Al//FjKTdAdKqkIHOzJBEIS+8Xm0G0UZJn36THv/Wh7fcdvlnps2bbq+ceNGl8LCQmVaWppJcnJyp5MRk5KSLGbNmlVxa9nMmTO9JUniqaee0r7wwgvFeXl5Bi4uLo3t111dXRtPnTo1AqCra93d0xu9ac/YsWPrNm/e7FJYWKhnamoqHzx40EKj0dT0JuY7aU96erphYmKixf79+y1u3LhhMGnSpKq5c+eWz507t6q37e5KvycxkiS5AGsAf1mW6yRJ+hRYAjwK/F6W5V2SJP0FXXLydtu/ZbIsj5QkaQmwBVgsSZJ/230BgDOQLEmSjyzLLf3dhn5nYg0Rb8OYSPjip/DuIxD6/2DGBjDs9X/XBUEQ7nuzZ8+ufvXVV9m+fbvD0aNHLyqVSjIyMgw2bdrkVFlZqffll19eBUhOTjb/+OOPc9rvO3bsWJZarW4qKChQzpgxwycgIKBe7mSvL0mSZICurnV3T7vAwEC/xsZGRW1traKiokLp5+fnD/DGG2/kR0ZGVnbXnpiYGMu9e/daaLVaZXR0tHbBggWV329PUFBQ/U9+8pPCGTNm+JiYmLT6+/vXKpXKXsV8J+2JjIz0ysnJMXrmmWdufvzxx9kqlarfJn4OSE9M23uMJUlqAkyAG8AMYFnb9Q+ATeiSmPlt3wPEAdslSZLaynfJstwAZEuSdAWYAJwYoDb0v5EP6VYwHdoMp/4KF/fBvD+C14zBjkwQBKH37qDHpL+cPn3aWKvV6ltZWTVbWVm1Avj7+zd++umnueHh4Z4AVVVVisrKSj21Wt3Ufl/79y4uLs1z5swpP3HihOnUqVOrCwoKDNrr5OfnGzg7OzcBqFSqxs6udVV+a4xpaWlZoJsT895779nEx8fn3Gl7VqxYUb5ixYpyrVarFx0d7bpgwYLKztqzdu3a4rVr1xYDrF692sXV1bWxNzHfSXsyMzMzjh8/bpKUlGQRERHh1dTUJE2fPr1y9erVxd7e3o30oX6fEyPLcgHwW+AauuSlAkgBymVZbs/O8gGXtu9dgLy2e5vb6tvcWt7JPR0kSVolSdIZSZLOaLXavm9QfzM0g0d/A0/9E/QM4aMI+Dwa6soGOzJBEIQhJTc3V3/58uUeCQkJV4yNjVvi4+PNO6u3d+9es7CwsI6hjsrKSkVZWZmi/fvDhw+bBwYG1k2bNq0mJyfHKCsry6C+vl5KSEiwjoyMLAfo6lp39/Rle9avX++0Zs0abWftASgoKFACXL582WDv3r2WzzzzTGlvYr6T9igUCsLCwmq3bt16IyUl5eLBgwcvBwQE1BUWFvZ5x8lADCdZoetF8QDKgc+A2Z1Ube+Okrq41lX5fxfI8jvAOwAhISFDd59/90m63X6/2gLH/ghXDsKjvwX/xwY7MkEQhHteVVWVYv78+V5btmzJDwoKqt+wYcONdevWuX5/eAZg3759FlFRUR1/Kebn5ysjIiJGArS0tEiRkZElCxcurATYtm3btfDwcJ+WlhaWLVtWHBISUg+gr6/f5bWuyvuiPREREZXR0dEuc+bMqQgLC6vtrD0Ajz32mFd5eblSqVTKf/jDH67Z2dm1dBdbb9rZbvLkyT5arVb/+23YuHFjwZQpU2rbf543b57HyZMnzcrKypQODg6BL7/88vX23qI7JXU2vtWXJElaBITLsvxM288/ACYBiwBHWZabJUmaBGySZfkRSZL2t31/QpIkJVAI2AEvA8iy/Ou253TU6+rdISEh8pkzZ/qzeQPjRiokRuuWYY96TJfMmDkMdlSCMCS8//77AKxcuXJQ4xhKJElKkWU55G6ekZqamqPRaHr0C2mgFBYW6j3//PMuX3/9tfny5cuLExMTrc6dO5dlaGg45P7wff311+1jYmJsNBpNzdixY+tefPFFrb+//6ih2p7OpKam2mo0GnVn1wYiiQkF3gXGA3XA+8AZYCoQf8vE3jRZlv8sSVI0MEaW5R+1TexdIMtylCRJAcAn6ObBOAOHAO/uJvYOmyQGoKUJjv8JjmzRnZYd/mvQLNXtOyMIQpdEEtNzwz2JEYaW7pKYgZgTcwrdBN2z6JZXK9AN97wEPN82QdcG+EfbLf8AbNrKn+c/PTAXgE+BDOBLIHpYrEy6U3r6MOVnuiEmOz/4/MfwcSSUXxvsyARBEARhUAzI6iRZljcCG79XfBVdr8r369ajG2rq7DlvAG/0eYBDiZ2PbtLvmX9A8ibYMREe2gTj/w8UYu9CQRAE4f4hfusNRQoFTPihbjm2aiL88+fw3mzQXhrsyARBEARhwIgkZiizVMHyeHj8L6DN0h0o+e/f6ubPCIIgCMIwJ5KYoU6SYOxSWP0N+M6Gf70Gf5uuW9EkCIIgCMOYSGKGixH2usMkoz6C6iJ4Z7puzow4UFIQBEEYpkQSM9z4PwbRp3TLr4/+XjfElDt8TmYQBEEQhHYiiRmOjK3g8R2wYje0NMJ74bD3BWjo8wNEBUEQBGHQiCRmOPOaAT8+AaE/hm/+Dn+eBJeTBzsqQRAEQegTIokZ7gxHwOw34ZkDoG8COyNh94+gtnSwIxMEQbinLFu2zP3AgQOmAMXFxXrh4eGeHh4eAZ6engHJycmmAHFxceZqtXq0SqUavX79esdb7+/qWnf3DER7UlNTDf38/Pzbv0aMGDFu8+bN9r2Nua/as2jRIrW1tbXG29s7oLfPEEnM/cJtAvzoa5j6czj/GeyYABc+h34+dkIQBGGoOHv2rOmMGTNqAFatWuU2a9asyuzs7AsZGRkZY8eOrW9ubmbt2rWqffv2Xbp06dKF+Ph465SUFCOArq51d8/37dmzxywyMlLd1+3RaDQNWVlZGVlZWRnp6ekZRkZGrUuWLCnvTcw9ac/tPP3008VJSUmX76aNIom5nygNYcYvYNURMHeBz56E2OVQVTjYkQmCIPSL0NBQn927d5sDrFmzxnnlypVundU7e/askaenZ71SqaS0tFRx6tQps5/+9KfFAEZGRrKtrW3LkSNHTN3d3Rv8/f0bjYyM5AULFpTGxcVZAnR1rbt7Bqo9t0pKSjJXqVQNPj4+jb2Juaftqa6ulmJjYy2efPJJt9jYWItbr82ePbvazs6uubefBQzQsQPCPcZxDPzfITi5Aw7/StcrM+sNGLdcHCgpCEKf23Bsg9uVsismffnMkVYja1974LW829XbtGnT9Y0bN7oUFhYq09LSTJKTk690Vi8pKcli1qxZFQBZWVmG1tbWzYsWLVJnZGSYBAYG1vztb3/Ly8vLM3BxcWlsv8fV1bXx1KlTIwC6utbdPb3Rm/bcKiYmxnrhwoUlvY35TtqTnp5umJiYaLF//36LGzduGEyaNKlq7ty55XPnzu3z1SWiJ+Z+paeEB34CPzoGDqMhaTV89DiU5Qx2ZIIgCH1m9uzZ1bIss337dofdu3dfVSqVZGRkGERFRbmHh4d7ttdLTk42f/zxxysBmpubpczMTJPo6GhtZmZmhomJSeuGDRsc5U6G3yVJkgG6utbdPe0CAwP9/Pz8/J999ln35ORky/a5K/Hx8ea3a09MTIzlkiVL3GfOnOmVkJDQUf/W9rSrr6+XkpOTLVasWFHW25jvpD2RkZFemzdvdh09enTtoUOHLn744YfXoqKiKk1MTPp8/oLoibnf2Y6EJ/dAyntwcKNuBdPMV2HCKlDoDXZ0giAMA3fSY9JfTp8+bazVavWtrKyaraysWgH8/f0bP/3009z2JKaqqkpRWVmpp1armwDUanWjg4NDY/v8mMWLF5e9+eabjvPmzasoKCgwaH92fn6+gbOzcxOASqVq7OxaV+W3xpiWlpYFujkx7733nk18fHzOnbZnxYoV5StWrCjXarV60dHRrgsWLKj8fnvaxcXFWfj7+9e6ubk19zbmO2lPZmZmxvHjx02SkpIsIiIivJqamqTp06dXrl69utjb27uRPiR6YgTdgZLjn4Hok+D+AHz5MrwbDkVZgx2ZIAhCr+Xm5uovX77cIyEh4YqxsXFLZz0bAHv37jULCwvrGOpQqVTNjo6OjampqYYABw4cMPf19a2fNm1aTU5OjlFWVpZBfX29lJCQYB0ZGVkO0NW17u7py/asX7/eac2aNdrO2tNu165d1lFRUR1LU3sT8520R6FQEBYWVrt169YbKSkpFw8ePHg5ICCgrrCwsM87TkRPjPAfFq7wxGe61Uv/fAn+OgWmvghhPwU9/cGOThAE4Y5VVVUp5s+f77Vly5b8oKCg+g0bNtxYt26da2RkZOX36+7bt88iKiqq7Nayt95669oTTzzh2djYKKlUqoaYmJgcfX19tm3bdi08PNynpaWFZcuWFYeEhNQDdHetq/K+aE9ERERldHS0y5w5cyrCwsJqu2pPVVWV4ujRo+YffPBBbntZb2Lu7p52kydP9tFqtf/zS2Pjxo0FU6ZMqW3/ed68eR4nT540KysrUzo4OAS+/PLL19euXVvck89F6mx8a7gICQmRz5w50+P7blTf4FThKcLV4Rgpe7VybOir1sI/X4QLCbo5M/O3g/O4wY5KEHrs/fffB2DlypWDGsdQIklSiizLIXfzjNTU1ByNRtOjX0gDpbCwUO/55593+frrr82XL19enJiYaHXu3LksQ0PDIfcL8fXXX7ePiYmx0Wg0NWPHjq178cUXtf7+/qOGans6k5qaaqvRaNSdXRNJTCfeT3+fbSnbsDS0JMI7gsW+i3EZ4dIPEQ4BWXth78+g+iZMfg4eXAf6xoMdlSDcMZHE9NxwT2KEoaW7JEbMienEkwFP8u4j7zLecTwfXviQ2fGzee5fz3H8+nFa5dbBDm9g+c2BZ0/CuBVw7I/w9mTIOTrYUQmCIAiCmBPTGUmSGO84nvGO4ymsKeSzS58RdymOI3lHUJurWeK3hMe8HsPMwGywQx0Yxpbw2J9gdCR8sQbenwMhT8NDvwSjTufJCYIgCEK/Ez0xt+Fo6shz457j4MKD/HrKr7EwtODN028y87OZvH7yda6UdbrP0PDkOQ1+fBwmrYaU9+HPE+HSgcGOShAEQbhPiSTmDhnoGTDXcy4fP/oxu+bu4hH1I+y+vJuIpAie3v80B3MP0tx6V7snDw0GpvDIG/DMQTA0g08WQfwPoaZksCMTBEEQ7jMiiemFAJsAXnvgNQ4tOsTa4LVcr77O80eeJzw+nL+m/pXiuvtgLptrCPy/f8O0l3UrmHZMgPR4caCkIAiCMGBEEtOJxvpm6muablvP0siSp0c/zd6Ivbw14y28LL3Y/u12Ho57mJe/fplUbWqnWzQPG0pDmL5Ol8xYqiDuadi1DCqvD3ZkgiAIwn1ATOztxJWUIo7svIjzSAvUgbaox9hi6dD12WV6Cj0edHuQB90eJKcih9iLsXx+5XP2Xt2Lv40/S3yXMNtj9vDdc8YhAP4vGU7+Gf71BuwIhVmvQdCT4kBJQRAEod+InphOOHpYMG6WirrqJo7FXWHnxpPs3HiSY/FXuH65jNaWrpdZqy3UvDThJQ4tOsSGiRtobGnk1eOv8lDcQ/wu5XcUVBcMYEsGkEJPt4/Mj4+Bkwa++Al8MA9Krw52ZIIgCMIwJZKYTlg7mzLpcS+WvhrKitcnMWWxN2bWhqT9K4/d287x7s+PcvDdC1w+c5OGus4n85romxDlG0XCYwm8+8i7THCc8J89Zw49x/GCYbrnjI0X/CAJ5v4BbqTCnyfD8e3Q2jLYkQmCIPS55uZmRo0a5T99+vSR7WVxcXHmarV6tEqlGr1+/XrH25Xf7prQNTGcdBvmtsYETncjcLobjXXNXMsoJed8MbnnS7h0+iYKhYSTtyUegbaoA22wsPvvYacu95xJHsZ7zigUEPIUeM+Cvc/DgVd0k38f2w4O/oMdnSAIQp95/fXXHUaOHFlXXV2tB7qkZu3atar9+/df8vT0bNJoNKMiIyPLNRpNfWflwcHB9V3dExwc3OMzlu43oiemBwyMlYwMtuehlf489ZswFrwQxNiH3aitbOToZ5f5eMNJPtl0kuMJV7h+pfx/hp1u3XPmzSlv/teeM6+deI3LZZcHqWX9xMIFlu6CyH9AWQ78dSoceROa+/QkdkEQhC6Fhob67N692xxgzZo1zitXrnS703urq6ul2NhYiyeffNItNjbW4vvXv/vuO/39+/db/PCHP+xYknrkyBFTd3f3Bn9//0YjIyN5wYIFpXFxcZZdlXd3T1+0f7gTPTG9pFBIOI20xGmkJZMiRlKhrSMnrZic88WkJudx7sA1DE2VuI+2QT3GFlWADYbGuo/bQM+AOZ5zmOM5hwslF9iVtYvE7xL59NKnjHcczxLfJUxXTUdfMQxOjpYkGLMQPKfDly/BkV9DRqKuV8Y1eLCjEwRhACQmJroVFRV1vTqiF+zt7Wvnz5+fd7t6mzZtur5x40aXwsJCZVpamklycnK3O5Smp6cbJiYmWuzfv9/ixo0bBpMmTaqaO3du+dy5c6u+Xzc6Otpt69at+RUVFXrtZXl5eQYuLi4df6m5uro2njp1akRX5d3dc/tPQRBJTB+xsDNGM9MNzUw3GuqauXahRDfslF7CpVM3UehJOHtboh5jizrQFgs73SGK7XvO/Cz4Z+y+spvYi7H87KufYW9iT5RPFJE+kdga2w5y6/qAqQ1E/h1GL4Q9a+EfD8HEZ2H6K2DQp//fJgiC0GH27NnVr776Ktu3b3c4evToRaVSSUZGhsGmTZucKisr9b788sv/Wn0QGRnplZOTY/TMM8/c/Pjjj7NVKlWnEx9jYmIsbG1tm6dMmVK7Z8+ejvkAnW2rIUmS3FV5d/f0uLH3IZHE9ANDYyXeIQ54hzjQ2ipTeLVC10uTVszRzy5z9LPLWDmZ4hGo66Vx8LTA0siSp0Y/xQ/8f8DRgqPEZMWw/dvt/CXtLzyifoQlvkvQ2GmQhvqSZd9wcJ8EBzfCie2QtQceews8pg52ZIIg9JM76THpL6dPnzbWarX6VlZWzVZWVq0A/v7+jZ9++mlueHi45/frZ2ZmZhw/ftwkKSnJIiIiwqupqUmaPn165erVq4u9vb07ekuOHj064uDBg5YuLi4WDQ0NipqaGsX8+fM9nnvuuaKCggKD9nr5+fkGzs7OTSqVqrGzcoDurgndE0lMP1MoJJxHWuI80pLJC0ZSXlRL7vkSstOK+fZgHmf3XzmNJCMAACAASURBVMNohP5/hp38rZnmNo1pbtP+Z8+ZUdajWOq3dOjvOWNkAfP+oDtQMuk53VLs4JXw8GbdNUEQhD6Qm5urv3z5co+EhIQrq1evdouPjzePjIys7O4ehUJBWFhYbVhYWC1w4+bNm3qJiYnmhYWFyluTmB07dhTs2LGjAGDPnj1m27Ztc0hMTMxuamoiJyfHKCsry0CtVjclJCRY79y586pGo6nvrBxg2rRpNV1dE7onkpgBZmlvguVME92wU22TbrVTWy/NxZOFKPQkXHws2zbZc+ClCS/x3Ljn2HN1DzFZMbx6/FW2pWxjwcgFRPlG4WrmOthN6j2PKboDJY/8Ck7sgEv7Ye7vwXf2YEcmCMIQV1VVpZg/f77Xli1b8oOCguo3bNhwY926da63S2ImT57so9Vq/2dC4saNGwumTJlSe7v36uvrs23btmvh4eE+LS0tLFu2rDgkJKQe6LK8u3uE7knDeVv8kJAQ+cyZM4Mdxh1pbWml8GoF2Wkl5KQVU35T978Va2dT1IG2eATaYuduxlltCjFZMfzr2r9olVuZ5jqNpX5Lmeg8EYU0hBebFaRA4nNQdEE3b2b2FjAdBnOBhEH3/vvvA7By5cpBjWMokSQpRZblkLt5Rmpqao5Go7knD5IrLCzUe/75512+/vpr8+XLlxf/+te/LhzsmISupaam2mo0GnVn10QSc48qv1lLznldD831KxXIrTLGZm3DToG2GLo383luAp9d+ozS+lLczd1Z4ruE+SPnD909Z5ob4dgf4KutuhOyZ2/VrWwa6vOAhEElkpieG+5JjDC0dJfEDMhwkiRJlsDfgdGADDwNXARiATWQA0TJslwm6Wau/hF4FKgFVsqyfLbtOU8Cv2h77OuyLH/QH/GWXi8g70IansHjMbMenN4ASwcTxjqoGPuQivqaJq5llJCTVkJ2ajFZJwpRKCXcfcL4w+i5XLPOIO56DFu+2cKfzv2JeZ7zWOK3BG8r70GJvdeUBjDtRRg1DxJXQ8L/wfnPYO7vwGIID5sJgiAI/WKg5sT8EfhSluWFkiQZACbAeuCQLMtvSpL0MvAy8BIwG/Bu+woF3gZCJUmyBjYCIegSoRRJkpJkWS7r62Cvnj3NVx/9A/4O9h5eeAVPwCs4FHsPr0FZHWRkqo/PeEd8xjvS0tJK4ZUKstt6aa59WgoYMcflORZ7y5w1+jeJVz7l00ufEuIQwlK/pUNvzxn7UfDMATj1V/jXa7BjIszaDEErdbsBC4IgCAIDkMRIkmQOTAVWAsiy3Ag0SpI0H3iwrdoHwBF0Scx84MO2RfUnJUmylCTJqa3uQVmWS9ueexAIB2L6OmarCQ9hIzniUpVN8YVznIjfxYm4GEZYWeMZNAHP4AmoxmjQNzDs61fflp6eAhdfK1x8rQhb6E1ZYQ05abo9aa79uwKb1mB+bBZKs2s5J2oP8NL1dVibWQ69PWcUejDpWd0k3y9+ottb5nw8PPYn3flMgiAIwn1vIHpiPAEt8J4kSRogBfgJ4CDL8g0AWZZvSJJk31bfBbh1T4H8trKuyv+LJEmrgFUAKpWqVwEfvqjl9a9LAQt8Hebx4OIoApqv03rtApnHviLt0JcoDQxRjdHgFTwBz6AJjLCy7tW77paVoylWjqaMm6UbdspNb0toLsD4ugVM0FtApe0NDl89ykff7OIBnwks9Vs6dPacsfaAHyTCuY9g/y/g7ckwfT1MjAY9sbhOEAThfjYQvwWUQBDwnCzLpyRJ+iO6oaOudPabVe6m/L8LZPkd4B3QTeztebjwTJgHD/racThLy+GLRbx7RktTixIzw2DCZsxkkkk51iVXuJGewtWU0wA4eHrrEprgCdirPQdt2Mk31BHfUN2w043L5bp5NOeNMct2gmwozbzBn76KQVL/nTmhM3nUcwjsOSNJEPQDGPkw7P0ZHHwVLuzWHV3gOHqwoxMEQRAGyUAkMflAvizLp9p+jkOXxNyUJMmprRfGCSi6pf6tB3S5Atfbyh/8XvmR/ghYkiRG2psx0t6MH071pLqhmWNXijlysYjDWVr+WdkMqAnwHsP0B1rxrM+h7rvzHI/7hOOf7WSEjS1eQeN1w04BGpQGBrd9Z1/T01Pg6meNq581DywaSVmhbrXT1VQzrK86QoHEldMVrLd5C9UYKx5/cBZqm971XA0YcydYshMyPod9P4d3pkHY8zD1BVAO/NCeIAiCMLj6PYmRZblQkqQ8SZJ8ZVm+CMwEMtq+ngTebPs3se2WJGC1JEm70E3srWhLdPYDv5Ikyaqt3ixgXX/HDzDCUMkjAY48EuCILMtkFVZx+GIRR7K0vH2+jJZWOyxNHmFa+OMEcQOTmxfJ+PdhUg/+E6WhIe5jxuEZNB6v4AmYWlrd/oV9TJIkrJ1MsXYyJWiWO/XVTeSkF3Pum8sYXzJBcVCfxOQM6h2O4hfkyvSwEMyt79HzjCQJAiLAYxp8uQ7+vRUyk3S9Mm7jBzs6QRAEYQAN1KSC54CdbSuTrgJPAQrgU0mSngGuAYva6u5Dt7z6Crol1k8ByLJcKknSa8A3bfU2t0/yHUiSJDHKyZxRTuY8++BIKmqb+PqKlsNZWr66VERitSmSFIRm/FSmjSjHsTKboovf8t2ZkxwEHL288Wxb7WTn7jE4w04j9PGb6ITfRCdamlu5cD6bfx87C1cMyN/XzEf7TqKwa2R0sDu+41ywczNDUtxj82dMrGHBX3X7yHzxU/jHwzDxxzDjF2BgOtjRCYIgCANAbHbXh1pbZdKvV3Dkom4uzbd55cgy2JjoM9OxBf/mfBR5mWizL4MsY2Zj19FD4xYQOCjDTrdqbG5k39lDnDhxHv18axyq1ChQYGCmYKTGEXWgLa5+Vugb6N3+YQOpvhIO/RK++TtYuutWMHk+ONhRCfcIsdldz4nN7oR7idixd5CU1jTy70u6hOarS1rKa5tQSDDRSZ9Q/SKsS65Qeuk8zQ0N6Bsa4R44Fs/gCXiOGz8ow063yizJJDY1jsxzebiU+KKuDECv2QA9fQVuflZtZzvZYmp5D81FyTmmO1Cy9DsYtwJmvQ7GloMdlTDIRBLTcyKJuTMuLi5jTE1NWxQKBUqlUk5PT88EiIuLM3/hhRdUra2tLF++vPhXv/pVYXflt7t2vxNJzD2gpVXm27xyjlws4shFLecLKgBwGqHHQxZVeNTl0ph9nprSEpAknLx82oadJmCrUg/acuiKhgp2X95NbOancN0Ev6rxjKwYC1W6zfPsVGYdZzvZuo0Y/GXbTXVw5E04/haY2sGcbTBq7uDGJAwqkcT0nEhi7oyLi8uYM2fOZDo5OTW3lzU3N+Ph4TF6//79lzw9PZs0Gs2oTz755KpGo6nvrDw4OLi+q3uCg4PFIZDcA8cOCKCnkAh2tyLY3YqfzfKlqKqery5qOXJRy+eXJarqR6G0HMXUkU2M4zp1hRc5FvsRx2I/wtzOXjfsFDQB14BAlPoDt/uuhaEFK0evZIX/Co5dP8YnWZ/wl/yPsat3ZYY8H7NSf77Zm803e7IxtTREPUZ3tpOrrxXKwRh20jeGh38JAY/rDpSMfQL8H4dHfwMj7G9/vyAIw0poaKjPyy+/XBgREVG5Zs0a58rKSr33338/7/Z3QnV1tbR3717zffv2mT/66KOVixcvrrjdPUeOHDF1d3dv8Pf3bwRYsGBBaVxcnGVZWVlVZ+XBwcGFXd0THBwsemNuQyQxg8TezIhFIW4sCnGjqaWVs7llHL6o5cjFIv5VqA967niNbmGacTHmlVdJP3yQb/fvRd/IGHXgON2wU9B4TMwtBiRePYUeU12nMtV1KrmVuezK2kXilQ+pMqki0Hccj+pFYVlozaXTN7nw9XWU+gpcR1njEWiL+xgbTC0GeNjJeRysOgzH/ghfbYHsryD8TQhcLA6UFIQBdn39K24Nly/36ZJHQ2/vWudfvXHbZGTTpk3XN27c6FJYWKhMS0szSU5OvtJd/fT0dMPExESL/fv3W9y4ccNg0qRJVXPnzi2fO3duVWf1Z86c6S1JEk899ZT2hRdeKM7LyzNwcXFpbL/u6uraeOrUqRFdlQN0d03onkhi7gH6egpCPW0I9bTh5dl+XC+v46tLWg5nFbHrigG1jQ4Yu4Yyw6ICv6Y88i5lcvn0cd2wk7cvXkG6YScbN/cBGc5xN3fnpQkv8dy459ibvZeYrBjeLFuHhZUFEcsW8KDeo9RcljrOdwKwd9cNO6kDbbF1HaBhJz193R4y7QdK7v5/cD4O5v4eLN1uf78gCEPe7Nmzq1999VW2b9/ucPTo0YtKpZKPPvrIcu/evRZarVYZHR2tXbBgQWV7/cjISK+cnByjZ5555ubHH3+crVKpmrt69rFjx7LUanVTQUGBcsaMGT4BAQH1nU3RkCRJ7qocoLtrQvdEEnMPcrY0ZukEFUsnqGhobuFMThmHs4o4fLGIveVWYDkGjVM1ocpCKkouc3TXhxzd9SHmdg4duwa7+Y9GT9m/w04m+iYs8lnEQu+FpNxMYdfFXXx08UM+kN9nqutUljy7BF85hNzzpeScL+b0nmxOf5HNCCtD3Mfo5tG4+Fqi1O/nYSc7X3j6S93qpeRfwp8nwkObIOQZcaCkIAyAO+kx6S+nT5821mq1+lZWVs1WVlatACtWrChfsWJFuVar1YuOjna9NYnJzMzMOH78uElSUpJFRESEV1NTkzR9+vTK1atXF3t7ezfe+my1Wt0E4OLi0jxnzpzyEydOmE6dOrW6oKCgY6lpfn6+gbOzc5NKpWrsrBygu2tC90QSc48zVOrxwEhbHhhpyy/m+nOtpJYjl4o4nFXEB99Z0GDojbVnHdONizGozSHt0Jec+/ILDIyNUQcG4Rk8AY9xIf067CRJEiGOIYQ4hnCz5iZxl+P47OJn/Dj/x6jMVCzxW8L8h+ajrDcip6135uKpQi78uwClgQK3UdaoA21xH92Pw04KPQj9f+ATrjtQct8LkB4Pj70Ftt79805BEAZVbm6u/vLlyz0SEhKurF692i0+Pt48MjKyI2FZv36905o1a7S33qNQKAgLC6sNCwurBW7cvHlTLzEx0bywsFB5axJTWVmpaGlpwcrKqrWyslJx+PBh81deeeX6tGnTanJycoyysrIM1Gp1U0JCgvXOnTuvajSa+s7KAbq6Z8A+qCFMJDFDjMrGhB9MUvODSWrqm1o4cbWEry5q+VdWEfG1biidJzLBsASNXEB2xgUunTqGJClw8vHDq221k7WLW78N5ziYOhA9NppVY1aRfC2ZmKwYtn6zlbfOvcVcz7ks8V/Cow8E0tzUQsGlcnJSi8k5X0x2atuwk9ocj0Dd5GAbl34YdrJyhxW74dtPYP86ePsBePBlmLxGHCgpCMNIVVWVYv78+V5btmzJDwoKqt+wYcONdevWuUZGRla2trYSHR3tMmfOnIq2ZKXD5MmTfbRa7f90Y2/cuLFgypQpHXXz8/OVERERIwFaWlqkyMjIkoULF1YCbNu27Vp4eLhPS0sLy5YtKw4JCanvrlxfX7/La0L3xBLrYUKWZbKLazomB5+6WkpjcwsquYQHDIpwqrhKU5GuR9fCwRGvIN2wk+uogH4fdsosyWTXxV3svbqXhpYGgh2CWeq3lBmqGegr9JFlmZKCanLSislOK6EoR/eH0ghrQ9RjdPNoXH2s0NPv46Gfqpuw72eQ+QU4aXRHFzgF9u07hEEnllj33HBfYv3666/bx8TE2Gg0mpqxY8fWvfjii9rb3yUMFrFPzH2opqGZ49+VtJ3xVMT1inpMm6uZpCzEtykPvcLvkJubMDA2QT02GK/gCXiMDcbYzLzfYqpoqODzK58TkxVDQXUB9sb2LPRdyCKfRdga2/4n9ooGctNLyEkrJi+zlObGVpSGeqhGWaMOtMF9tC0m5n24u3FGIux9AWpLIOynMPVF0L/HT/YW7phIYnpuuCcxwtAikpj7nCzLXC6q7pgcfCanDJob8W25QYjiBpYlV2itqUSSFDj7jmo7CiEUaxfXfhl2amlt6dhz5ljBMZQKJQ+7P8wyv2Vo7DT/9c7mxhbyL5aRc16X1NSUN4AEDmrzjk32rJ1N7z7O2lLY/wqkfgK2PrpeGVXoXbZUuBeIJKbnRBIj3EtEEiP8l8r6Jo5dLubwxSIOX9SirazHobGIUL1C3GtyoPQ6AJYOTh27Brv4BaCn7Ps5I7mVucRejOXzy59T1VTFKOtRLPFbwmyP2Rgrjf+rrizLFOdVd0wOLsrVbdtgZmPUNuxkg4v3XQ47XUnWHShZkQ8TVsHMV8FQbNcwlIkkpudEEiPcS0QSI3RJlmUuXK/sOA7h7LUyTJqq8G/OJ7C1AJPibOSWZgxNTFFrgvAKnoB6XAjGI8z6NI7aptqOPWcul13G3MCcBd4LiPKNws2s8z1dasobdAnN+RLyM0tpbmpF31APlf9/VjsZm/Vi2KmhCg69BqffAQs3mPcHGDnzLlsoDBaRxPScSGKEe4lIYoQ7Vl7byL8vF3Mkq4gjl7RUVdWgqs8nWLqOQ8VVqKtGUihw8fXv6KWxdnbts/fLsszZorPEZMVwKPcQLXILU1ynsNRvKZOdJ6OQOu9laWpsoSCrjOzzxeSmFVNT0QgSOHpYoG5b7WTt1MNhp2sndZvklVyGsU/oDpQ0se6jlgoDRSQxPSeSGOFeIpIYoVdaW2XSCio4nFXEkYtFpOWXY19fhH9zPr6N19Cv0B3rYeXkjGfQf4adFHp9s3ldUW0RcZfi+OzSZxTXFaMyU7HYdzGPez+OuUHXE5BlWUZ7rYqcNF0vjfaabtjJ3NaoY7WTs7cleso7GHZqqod/b4WjfwATG5jzW/Cf3yftEwaGSGJ6TiQxwr1EJDE9VJ+ZSc3xE/0Q0dBW09jMVW0N32mr+U5bTXNTA0aKKiz065BaqpCRMVDq42LrgJudEy62Dhjq3/0qoha5hctllzmnPcf16uvoK/QZZT2KsfZjsTO2u+39tY16XC835nq5CTcrjWiRFejrteJoXoezZS3OFnUY6rd2/5CqG3AhQfevfQD4zQXDvh1SE/rHN2e+AWB8yPhBjmRgmYwPwTiwd1sGiCRGuJeIU6x7qC41laLf/Gaww7gnObR9Tf5eebNCotjMhJvmJhTU1ZNdmI8ky1jV1GNfUYNDZS2mjb3fRdsa+M+slAbgW2S+pegO7zdv+/JW6FNq5UexzRhu2owmr8wO5FYsKrOxLT6Pbcl5TGoL6XrQyQLIhwN/6XVbhIHl3vZv0eEjgxnGgLP/+Qu9TmIEYagQSUwnLCMjyVapyMnOxtikTw9eHbYqGmTSi1vIqpD4rkLGrK4EdX0ePqb5lI4oIcsFrByd8RwbjKcmCOeRvnc17FTRWMme7/YQdymOgpoC7IzsiPB5nIiREdgY2dzRM+RWGW1+DTkZ5eRmjOC7Ai++83occxtD3P2tUPtb4uRlhp7e94adSr7THVuQdxo8psLsreJAyXvYxzt3ArD8iScGOZKBJen37yaWgnAvEMNJXTh37hzXr1/H1NS0j6Ma/hqamrlws570klYyyhXUVFbhUZuLX9M17GsKkFpbMDQdgee4EN3ZTmODMTTp3efcvudMTFYMRwuOduw5s9RvKWPtxvZoIm91WX3HfjT5WWW0NLdiYKSHKkA3Mdg9wAajEW2/GFpb4cw/IHkTyDI8tBHG/1AcKHkPEnNiem64DSddvHjRYP/+/WZr1qwpudtnNTc3M2bMGH9HR8fGw4cPXwHIysoyiIqK8qyoqFCOHj26Nj4+PtvIyEiuq6uTFi5c6HH+/HkTS0vL5s8+++yqr69vI8C6descd+7caatQKNi2bdu19jOd4uLizF944QVVa2sry5cvL/7Vr35V2Nt3DBdiTkwviCSmb8iyzI3KBs4VNpJZLpFd1oRjTT5edbl41V9D2VSHpNDDzT8Az6BQvIInYOno1Kt3Xau8xq6Lu/j8yudUNVbhZ+3HUr+lne45cztNDS3kZZZ2LOGuq2xEksDRy6Jjkz1LBxOkijzYs1a3v4xbqO5ASTvfXsUv9A+RxPTccEpitmzZYvf222871NfXK1QqVUNcXNx3KpWqubfP27Rpk0NKSopJdXW1XnsS8+ijj3o+/vjjZatWrSpbtmyZSqPR1L300kvaN9980y4tLc34k08+ufbOO+9YJSYmWu3du/dqSkqK0bJlyzy//fbbzNzcXP2HH37YJzs7Ox3Aw8Nj9P79+y95eno2aTSaUZ988snV4ODg+p6+o68+v3uBSGJ6QSQx/aO+sZnzN+s5X9LKxTJQVBThUZuLd8M1zOt1fyRZObsyMiQUz+AJOHv79XjYqbapln3Z+4jJiuFS2SXMDcyJGBnBYt/FuJn3fNhHbpUpyq3SHVSZVkxJfjUAFnbGqANtUY+xwan2AHoHX4bGGpj2EjzwE9AT3fn3ApHE9FxfJzGHPsx0Ky2o7tOxeWuXEbUzfzAqr7s6ZWVlCi8vrzFxcXFX0tPTjR555JEqe3v75kmTJvm118nJyTGKj4+/NGfOnOrbvfO7777TX758uce6detu/P73v3c4fPjwldbWVmxsbDRFRUWp+vr6JCcnm27atMn56NGjl8PCwrw3bdp0/aGHHqppamrC3t5eU1JSkvrKK684Avz6178uBGivB9B+L+h6awDeeOONwp6+QzGMeoXFxF7hnmFkoGS82wjGu+l6afLK9Pm2yJ7T5RMoLK5GVZODV3kupV/s5pukeAxMR+AVNF63yZ4m6I6GnUz0TVjos5BI70jOFp1lV9Yudmbu5MOMD5niOoUlvkt4wOWBLvec+T5JIeHgYY6Dhzmhj3lSVVrftny7mPNf5ZN6KA9DE2dUPvGoG79Alfw7jDI+1x1d4Dz2bj8yQRB6SU9Pj6amJqmiokIPoH2YJSsrKwPgk08+sdi2bZvjQw89VPPFF1+Y/fznP/+fv3KMjY1bz507lwUQHR3ttnXr1vz25wHcvHlTaWZm1qLfNgdJrVY33rx506DtmoGHh0cj6E6qHjFiRMvNmzeVBQUFBhMnTuxImpydnRvz8vIMAFxcXDqGglxdXRtPnTo1ojfvcHJy6nVv01Aikhhh0EiShMraGJW1MY8BNQ1GpBWO4ELpaI6VNGJWno9HbS7Vx0+Q+fVhJD09XP1GMzJkAp7BoVg6ON72+cEOwQQ7BP/XnjPPHnq2Y8+Z+SPnY2Fo0aO4zayNGPOgK2MedKWxvpn8zLZN9s4Xc7lqKpI0BafKy6i/+z0ek/2xnLsG9Hs2nCUIw8ntekz6i7m5eetf/vKX7A0bNrgUFxfrp6enG2/btu26mZlZ6/nz5w1feeUV18OHD18yNDSU582bVzVv3ryMrp4VExNjYWtr2zxlypTaPXv2dOyv0NlohiRJcnfXuipvbW39n0l83dW/3fvvByKJEe4Zpob6THLXZ5I7tLa2klNqTKrWg8OlMjXFWtxrcii9nEvehVQOf/A3LJxc8ZkwEa+gCTj5+KJQdD3sZG9iz7Njn+WHY35I8rVkdmXt4jdnfsP2b7czx3MOS3yX4Gvd87ksBkZKPMfZ4TnODrlV5mZOpa6XJtWY4zd8OL4fLA8noh7rhDosECcvCxTfX+0kCEK/eeKJJypCQkLq4uLiLFNSUkw2b97ssGHDhptRUVFeb7/9dq5arW4CuF1PzNGjR0ccPHjQ0sXFxaKhoUFRU1OjmD9/vsfu3buzq6qq9JqamtDX1ycnJ8fA3t6+CcDR0bExOzvbwMvLq6mpqYnq6mo9e3v7FldX146eF4Dr168buLq6NgEUFBR0lOfn5xs4Ozs3OTo6Nvf0Hf39ud4r7jiJkSTpYSAK2CHL8reSJK2SZfmd/gtNuJ8pFAo8bU3wtIUIoLrehG9v2HOhLJS8okpsK3JRl+VQlpTAN4lx6JuaMTIohJEhoag1QRgYdz78rq+nz2yP2cz2mE1WaRa7snZ1LNUOsg9i6ailzFTNRF/R8/kskkLC0dMCR08LJj7uRWVxHTmHT5BzsoS001Z8e/ochiZ6qAJ0E4NVAdYYmoh5M4LQXyoqKhQ3b95UApiZmbX4+fnVl5aWKpcsWaJ+4oknisPDwzuGdG7XE7Njx46CHTt2FADs2bPHbNu2bQ6JiYnZABMnTqx67733rFatWlX27rvv2sydO7ccYM6cOeXvvvuuzUMPPVTz3nvvWU2aNKlKoVAQGRlZ/sQTT3i++uqrN3Nzc/VzcnKMHnzwwRpZlsnJyTHKysoyUKvVTQkJCdY7d+68qlAoevyO+8UdT+yVJGk38BTwC2AfsFCW5Wf7Mba7Jib2Dk+tra18V1JPalEzl0oaQVuAe00OHnXXMGxtAIUezn6j8Z0wEa/gCVjYO3T7vIqGCj6/8jm7snaRX52PnbEdi3wXsdB7IXYmt98R+LYaa2jc/2vyjp0hp3UaOU0TqK+TUCgknLwtOo5CsLQXexL1BzGxt+eGy+okrVart2DBAs+ysjJlWVmZ0tnZuXHnzp3Zfn5+Y3x8fOra673zzjs5U6dOrb3T57YnMe2rkzIyMgwWL17sVVFRoRcQEFCbkJCQbWxsLNfW1kqRkZEeFy5cMLGwsGiJjY39zt/fvxHgpZdecvzkk09s9fT02Lp167WoqKhKgNjYWIuXXnrJraWlhWXLlhVv2bKlsLfvGC76ZHWSJEnvyLK8qu37N4GZsizf0/t4iyTm/lBe28i3hQ1klLZSeuMmDlW5eNTmYtVUDoCpoyv+oZMYGTIBx5E+XQ47tcqtHC04+p89Z6S2PWdG9XzPmU7lnYbE1bRqL3PT/cfkjFhGTlYNpddrALByNOlIaBw9zcWwUx8RSUzPDZckpl1f7hMjDLy+Wp20t/0bWZZfliTpubsNTBD6gqWJAQ96GvCgJzS3jOBKsQup2lDO3qzEsPga6vIcqhLj+CbxM/RMzPAMCmHUuo57rwAAIABJREFUhEm4a8ZhYPSfCbcKScFU16lMdZ3KtcprxF6MZfeV3fwz55/4Wvmy1G8pj3o+2uM9Zzq4TYAffY3i37/F6ejvcDL+lEmRv6HS/hGy2zbZS/1XHucOXsPQVIl72yZ7qgAbDI3F9DVB6C0bG5uWkJCQO+5pEYaO2/bESJL0B2Btp9Oj73GiJ+b+JssypTW6XpqL2kZqC/NwrsrFve4aRq2NoNDD1ieAwEmT8QqZgLmt/f884/t7zpgZmLFg5IJe7znTofA8JK6GG9/qDpN89Ldg7kRjXTPXMkrJSSsmN72E+pqmtmEnSzwCbVEH2mBhJ4adekL0xPTccOuJEYa2uxpOkiTpdUADLJZluVaSpFnARlmWH+jzSPuYSGKEWzW3tJBVVE9aURPa6zcxLb2GujYHq+YKAAztXfEPncio0Ek4enkj3TI5TpZlzhWdIyYrhuTc/9/enUdHXd3/H3/eWZJJyL6H7JCQhU32VWR1A4UqKNH6rUuP/VW/ba22X7WtXdS22tpia3FB6l6DirYVWxcURFzYAhoCJBCyb0D2kH1m7u+PmcQIBAgkGSZ5P86Zw8wns9ybE+CVu7zvh9i0jdlRs0lPSe9VzZlvsFlh22rY/DswesJlD8OEm8A5bWW3a47k1zuL7FVTW9Ft2mlc57STPwbDeU5zDXISYnpPQoy4kJz3mhil1A3Aj3EcH9wEPKy13tqXjewPEmJET7TWVB1vZ09lGwWV9dgqiohuKiKytRIDGuXlS/T4SUyYNZP4cRMxWyxdr+1ec6aqpYoY3xhWJq88p5ozgONAybd/AEWfQcIlcNVfICjhpKfVH2umMKuawr1VlB+sw27XWIaZiRvjnHZKC8JDpp1OIiGm9yTEiAvJ+Y7ELMCxI0kBkcDVWuvcvm5kf5AQI85WW4eVA8fa2FfRRENZKQF1xcS1FONpb0cbTPiNSOWiWTNJmTodvxDHjqUOWwcfFX9ERk4Gu4/uxmK0sHjEYtJT0ntfc8Zuh8znYeOvQNtg/gMw7XvQwyLkthYrxfscgaYou5q2JisGo2J4UkDX2U5+IVJgDyTEnAsJMeJCcr4hZhPwS631p0qpscDLwN1a60193tI+JiFGnAutNUca2thT0Up5aSWGo0XENhURYG0AwBgSTdKUaUyaPYvwEYkog4HcmlwycjL4T/5/aLW1nnvNmfpSx4GShz6A6CmOowvCUk77ErvNTmV+Q9dRCLWVjvWLQcOHde12Ck/wG7LTThJiek9CjLiQ9OkBkEqpSOBNrfXMPmhbv5IQI/pCa4eVfZUtHCytoaW8mND6IiLajmBAY7f4EjZ6AlPnzCbxook0q7aTa86MWsHyUb2oOaM17H0D3r0X2o/DnJ/CrLvA5HHm1wJ1R5u7Ak35oXq0XWPxMRPvnHaKSQvCwzJ0pp0kxPTeYAsxfbHFurm5WU2bNi2lvb1d2Ww2ddVVV9WuWrWqHBy1q370ox9FbdiwIdBgMOhbb7312C9+8Yuj77zzjm96evrIzvOQlixZUvvYY49VdL6n1Wpl7NixaREREe2dNWeuvfba+G3btvn6+vraAJ577rmCmTNndtW02bJli/f8+fNT165dm3/LLbfUAhiNxklJSUkt4DiHadOmTXk99eP5558PvPXWW0ds2bLlwJw5c5pzc3M9xo8fPyY+Pr4VYOLEicdfffXV4nP9PvWHPj0AUmtd4ZxiEmJIsJhNTIrxZVKML1rHUlY3ma/KGqkuLsFSVYx19xf8N/MT7AYTlthkxsyYwbpLXiSr1TE689RXT7Emaw0L4xaSnpLOhLAJp685oxSMuw5GzIP37oXNv4V9/4KlT0DUpDO2NyDMm4sWxnLRwljamjso3ldDQZbjBO6cbZUYTIqoUYHOUZpg/IJl2kkMXo8++mjoU089Fd7a2mp45ZVXQtavX384Nja214cjWiwW/emnn+b6+/vb29ra1JQpU5I/+uij+gULFjQ98cQTwaWlpebDhw9nG41GysrKuv5vnTx58vHOgHKihx9+ODwxMbHl+PHjxhOul3YGlO6sViv33ntv9OzZs+u7X/f09LR3Hmp5OrW1tYbVq1eHjRs3rqn79ZiYmLazef2F6Jx+HdNat5z5Wd+klDICu4AyrfUSpVQCsA4IAnYDN2mt25VSnsBLwCSgGseuqELne9wP3AbYgB9qrd8/l/YLca6UUkQHehEd6AVjwmhuG8feiibyCsuxVpYQWVrE7ox97M5Yiz1oOHPGT+HW6dezuX07/zz8L94rfO/sa874hMLy52DMcvjP3bB2Icz4X5h7P3ic3TZrT28zSVPCSZoSjt1mp+JwvXOUppqtrx1k62sQHNVt2ineDzVEp51E/3n/qcdjqkqK+rQ2QEhMXPNl37/rtAdL1tbWGh599NHh69evz8vOzrZcdtlljb6+vvaUlJS0zucUFhZa3nzzzYOLFy8+frr3MhgM+Pv72wHa29uV1WpVnb+MrF27NiwjIyPfaHRkkaioqDOGpMOHD5vff/99//vvv79i1apVpy8r7vS73/0ubOnSpbW7du06pymCe+65J+qee+6pXLVq1elPz3UjA1kS9EfAgW6PHwVWaa2TgFoc4QTnn7Va60RglfN5KKXSgJXAaOBy4ElnMBLCZbw9zUyLD+D6uWmkX7eIEdd8m4opKzgYOY0jTXZKNr/Nlt//EdvfdnNj3pXcOex/MFg1v/7i1yx4YwF/3PlHShrOcMBvypVw53bH9uvP/wpPz4LCT3vdVoPRQNSoQGYtT+LG30znxt9MZ+a1iXh6m9n9QTFv/iGT5+/9lI9eOkD+nmO0t/b6l1UhLihGo5GOjg5VX19vBEhOTm4PDAy05+Tk7M/Jydn/y1/+smz06NFNCxcubNqwYYNvSkpK2om3CRMmdC1Ks1qtpKSkpIWHh4+/5JJLGubPn98EUFJS4vnyyy8HjhkzJnXOnDlJe/fu9ex8zZ49e3ySk5PT5syZk7Rr166ubY533nlnzB/+8IfSU51z9Jvf/CZq1KhRabfddltMS0uLAigoKDBv2LAh8Kc//emxE5/f3t5uGDNmTOr48eNTXn755YBTfS8+++wzr7KyMo/09PT6E79WWlrqkZqamjZlypTk9957z6dX32QXG5CJcaVUNLAY+C1wtzO+zgducD7lReDXwFPAUud9gPXA35zPXwqs01q3AQVKqTxgKvDFQPRBiDMxGAzEB3sTHxwHk+M43jqdrJJayvOLMRwtJnJfJh7ZHUw2mBgfMZuauFb+2biOl/e/fOaaMxZ/uPqvMOZa2PBDeGExTL4VFv4GLH7n1N6AcG8mLIplwqJYWps6HLudsqrI33OMnM8rMJgU0aMCu2rS+AZZzvymQpzCmUZM+oufn5/96aefLnjggQeiqqqqzNnZ2V5/+tOfyn19fe179+71/PnPfx69efPmg56envpMB0ACmEwmcnJy9ldVVRkXL148cufOnZYpU6a0tre3K4vForOzsw+8+OKLATfffHN8ZmZm7syZM5uKioqy/P397a+99pr/tddem1hUVJSdkZHhHxISYr344oub33nnHd/un/HnP/+5LCYmpqOtrU3deOONcQ888EDEY489VnHHHXfEPPLII6Um08n/befl5WXFx8d37N+/32PRokXJEydObBk9enRb59dtNhs//vGPY19++eWCE18bGxvbUVBQkBUREWHbunWr94oVKxL379+fHRQUZD+Pb/2A6fXC3nP6EKXWA78HfIGfADcD25yjLSilYoB3tdZjlFLZwOVa61Ln1w4D03AEm21a61ec1//ufM36Ez7rduB2gNjY2ElFRUXn1GZZ2Cv6kt1uJ7+qiYMHS2ipKCaorgg/ayMADf5elETUcTikhmFR4Vyfcj3LEpf1XHOmvdmxTmbbk+AbCUtWwajL+qytNpudijxHkb3CrCrqjzpmj4OjfIgf51gcHB7nPtNOsrC39wbjwt7169cHZGZmeo8cObLtgQceODJt2rSUVatWFXeeZL1hwwbfn/70pyeV4fby8rLv2bMn58Tr99xzT+SwYcPsDz744JGEhITR77333qHk5OR2u92Ov7//RY2NjV+e+JqoqKixu3btOvDwww+Hr1+/PthkMum2tjZDU1OT4dJLL63rPBW7U/eDJqOiosZ2Xq+trTVZLBb7X/7yl6Kbbrqprvtrrr322vglS5bUd19TU11dbUxMTBzj7e1tB6iqqjL7+/tb169fn3fiwZdTp05Nfuyxx0p6cyBmf+vThb29pZRaAhzVWmcqpeZ2Xj7FU/UZvna613x9Qes1wBpw7E7qdYOF6AcGg4HEMF8Sw9KANOqa29ibV0F1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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "x = np.linspace(0, 5000, 10000)\n", "y1 = (1 - (x/7500))*6000\n", "y2 = (1 -(x/5000))*9000\n", "y3 = (1-(x/6000))*7000\n", "y4 = 5000 + x*0\n", "y5 = 0 + x*0\n", "\n", "y9 = (4000000 - 500*x)/600\n", "y10 = (3654545.45 - 500*x)/600\n", "\n", "plt.plot(x, y1, label=r'$x_{1}/7500 + x_{2}/6000 \\leq 1$')\n", "plt.plot(x, y2, label=r'$x_{1}/5000 + x_{2}/9000 \\leq 1$')\n", "plt.plot(x, y3, label=r'$x_{1}/6000 + x_{2}/7000 \\leq 1$')\n", "plt.axvline(x=4000, label=r'$x_{1} \\leq 4000$', color='grey')\n", "plt.plot(x, y4, label=r'$x_{2} \\leq 5000$')\n", "plt.plot(x, y9, label=r'$z=4000000')\n", "plt.plot(x, y10, label=r'$z=3654545.45')\n", "\n", "y6 = np.minimum(y4,y1)\n", "y7 = np.minimum(y6,y3)\n", "y8 = np.minimum(y7, y2)\n", "\n", "plt.fill_between(x, y8, y5, where=x <= 4000, color='grey', alpha=0.5)\n", "plt.xlabel(r'$x_{1}$')\n", "plt.ylabel(r'$x_{2}$')\n", "\n", "plt.legend(bbox_to_anchor=(1.05,1), loc=2, borderaxespad=0. )" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Solution\n", "When we display the objective function, we find out there are two candidates for the solution, one on the limit for $x_{2}$ and the metal machining constraint. We can obtain the value of $x_{1}$ and $x_{2}$ at this point:\n", "\n", "$x_{2} = 5000$\n", "\n", "$x_{1} = 7500*(1-x_{2}/6000)$\n", "\n", "\n", "\n", "$z = 500*1250+600*5000 = 3006250$\n", "\n", "The other point represents the intersection between the metal machining constraint and the electric work constraint:\n", "\n", "$(1-x_{1}/7500)*6000 = (1-x_{1}/6000)*7000$\n", "\n", "$x_{1} = (7000-6000)/(7/6-6/7.5) = 2727.27$\n", "\n", "$x_{2} = 3818.18 $\n", "\n", "$z = 500*2727.27+600*3818.18 = 3654545.45$\n", "\n", "The second candidate provides a higher value and therefore is the optimal solution\n", "\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" }, "pycharm": { "stem_cell": { "cell_type": "raw", "source": [], "metadata": { "collapsed": false } } } }, "nbformat": 4, "nbformat_minor": 2 }